Skip to content

feat: ship Assistant safety, subagent orchestration, and onboarding - #11

Merged
sambitcreate merged 268 commits into
mainfrom
features-jul30
Aug 9, 2026
Merged

feat: ship Assistant safety, subagent orchestration, and onboarding#11
sambitcreate merged 268 commits into
mainfrom
features-jul30

Conversation

@sambitcreate

Copy link
Copy Markdown
Owner

Release scope

  • Adds a first-run onboarding flow for selecting and configuring an AI provider, with regression coverage for display state and provider defaults.
  • Hardens scheduled Assistant automation with exact provider and MCP bindings, safe approval contracts, bounded tool recovery, and schedule persistence guards.
  • Ships Subagent V2: capability narrowing, exact approval-bound effects, durable foreground/background lifecycle, nested orchestration, MCP/web/shell/workspace boundaries, and accessible renderer controls.
  • Adds native helpers and adversarial regression coverage for safe workspace mutation and shell execution.
  • Retains MCP deadlines through configuration, inventory, read, and mutation paths; updates the MCP SDK to its security release.

Validation

  • npm test — 1,184 application tests plus native worktree and Computer Use suites
  • npm run type-check
  • npm run lint
  • npm run test:branding — 24 tests
  • npm run test:native — 4 tests
  • npm run build
  • git diff --check

Hosted CI

GitHub Actions is queued on the macOS 26 runner pool. The integration-only rerun was independently locally validated before this draft was opened; this release PR is intentionally not being merged to main until its hosted checks report.

@sambitcreate sambitcreate reopened this Aug 6, 2026
@sambitcreate sambitcreate reopened this Aug 6, 2026
@sambitcreate sambitcreate reopened this Aug 9, 2026
@sambitcreate
sambitcreate marked this pull request as ready for review August 9, 2026 15:03
@sambitcreate
sambitcreate merged commit 240c83f into main Aug 9, 2026
2 checks passed

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ No critical issues — one hardening opportunity noted inline.

Reviewed changes — full PR scope across 218 files touching Assistant safety hardening, Subagent V2 orchestration, onboarding, native helpers, MCP SDK updates, and DataStore authority fences.

  • Assistant schedule execution boundaries: Pins automated runs to exact provider/model/connection fingerprints; rejects project+connector scope mixing; validates MCP server identity with fingerprint-bound bindings.
  • Subagent V2 approval and authority: Deterministic argument canonicalization for one-shot approval binding; capability narrowing with per-field validation; per-call outbound approval broker with authority revision gating.
  • Native file mutator (subagent-file-mutator/main.c): Pinned parent-fd, O_NOFOLLOW, exclusive-regular, and post-swap atomic verification with rollback.
  • Native shell runner (subagent-shell-runner/main.c): Private tmpfs-like temp tree, binary nonce/digest framing, UTF-8 validation rejecting control/bidi, SIGTERM cleanup.
  • DataStore fences: beforeExternalCacheCommit and beforeWritePublish for synchronous authority checks.
  • MCP tool identity: Server-ID-scoped collision-resistant naming with SHA-256 suffix.
  • Onboarding: First-run provider selection flow with regression coverage.

Note: 1 inline comment(s) dropped because they did not anchor to lines inside the PR diff:

  • main/services/outbound-approval-v2.ts:16426 (RIGHT) — file not in PR diff

Pullfrog  | Fix it ➔View workflow run | Using DeepSeek Pro𝕏

@pullfrog

pullfrog Bot commented Aug 9, 2026

Copy link
Copy Markdown

One minor hardening observation that was dropped from the inline review due to a path mismatch:

The canonicalApprovalValue display function in main/services/subagents/outbound-approval-v2.ts and the canonicalValue digest function in approval-v2.ts produce different canonicalizations (e.g., -0 normalization). The digest path normalizes -0 to 0 while the display path preserves -0. This is not a security bypass — digest verification runs independently — but a crafted -0 argument would display differently from how it was verified. Consider unifying these two canonicalization paths or documenting the divergence.

Pullfrog  | View workflow run | via Pullfrog | Using DeepSeek Pro𝕏

@sambitcreate
sambitcreate deleted the features-jul30 branch August 9, 2026 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant